package models

import canchas.Cancha

/**
 * Trait: ConTecho
 * 		- Contiene los calculos y logica necesaria para saber el precio de una cancha que tiene techo
 */
trait ConTecho extends Cancha {
  
  abstract override def precioReserva(r: models.Reserva) = super.precioReserva(r) + calcularRecargo(r)

  private def calcularRecargo(r:Reserva) = {
    if(r.esDiaLluvioso()) 
      precioBase * 0.1f 
      else 0
  }
  
}


/**
 * Trait: ConLuz
 * 		- Contiene los calculos y logica necesaria para saber el precio de una cancha que tiene luz
 */
trait ConLuz extends Cancha {
  
  abstract override def precioReserva(r: Reserva) = super.precioReserva(r) + calcularRecargo(r)

  private def calcularRecargo(r:Reserva) = {
    if(r.esHorarioNocturno()) 
      precioBase * 0.2f 
    else 0
  }
  
  override def iluminacionSuficiente(r: Reserva) = true
  
}


/**
 * Trait: ConTribuna
 * 		- Contiene los calculos y logica necesaria para saber el precio de una cancha que tiene tribuna
 */
trait ConTribuna extends Cancha {
  
  abstract override def precioReserva(r: Reserva) = super.precioReserva(r) + calcularRecargo(r)
  
  private def calcularRecargo(r: Reserva) = {
    if(r.esFinDeSemana())
      precioBase
    else 0
  }
  
}
